iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Software Development

C++ 套件管理器求生指南 Conan vs Vcpkg系列 第 2 篇

D02: 套件管理東西軍 Conan 還是 vcpkg 都機!

  • 分享至 

  • xImage
  •  

系列開始之前,我要先做一點聲明:這個鐵人賽系列文都會是我一個字一個字打出來的。

當然我會用 AI 研究問題,會跟 AI 腦力激盪,但是我就是不想叫 AI 幫我寫文章。

如果你不小心眼尖抓到了一句讓人生煩的 AI 語法,那一定不是我違背諾言偷偷叫 AI 幫我寫,而是我已經看太多 AI 文被洗腦了啦。(馬上用了一次「不是...,而是...」句型,逃~)

好,我們廢話不講了,開始吧。

以下我會陳列十個關鍵事實作為暖身,讓大家快速一窺這兩套管理器的各種面向(合不合你個人口味):

事實一:Conan 是用 Python 寫的,vcpkg 是用 C++/CMake script 寫的

  • 這年頭還有人電腦上沒裝 Python 的嗎?其實真的有啦,所以後來 Conan 也提供了免 Python 的獨立安裝檔。vcpkg 血統看起來就純多了,但是就我所知討厭 CMake 的人也是蠻多的XD

事實二:Conan & vcpkg 都跨平台

  • Conan 支援 Windows, macOS, Linux, FreeBSD, 以及一些 Unix 分支
  • vcpkg 支援 Windows, macOS, Linux, FreeBSD, 以及一些 Unix 分支
  • 雖然 vcpkg 的名字看起來很像只支援暈倒系統,但其實兩者在所有的主流平台都可用喔

事實三:Conan 和 vcpkg 都是 MIT 授權,可免費自用商用

  • 咦,那這些公司賺什麼?
  • JFrog 賣的是企業內部用的 Artifactory(Conan私有倉庫),微軟賣 Visual Studio 與 Azure

事實四:套件倉庫

事實五:套件數目

  • 撰寫本文的當下,Conan Center 共收錄了 1948 個套件,Vcpkg registry 共收錄了 2858 個套件
  • 看起來 vcpkg 的套件數目比 Conan 多了將近一千個,真的差這麼多嗎?vcpkg 有個習慣是會把子模組拆來算,所以 vcpkg 光是 boost 就有 162 個。相對的 Conan 只有一個 boost。所以雖然 vcpkg 的套件數目確實多一些,但是沒有差距那麼大。

事實六:Build System

  • Conan 直接支援眾多建構系統:CMake, MSBuild, Makefiles, Meson, SCons, Bazel, Xcode 等等
  • vcpkg 只支援兩套建構系統: CMake & MSBuild
    • 官方說你還是可以透過 vcpkg 下載套件,然後自己設定 include/link 路徑來橋接到其他建構系統上,有點硬凹,但是也沒說錯啦

這可是寫 C++ 才有的奢侈呢,有好多個建構系統可以選:今天的心情我想用 CMake,明天想用 Bazel,後天想用 SCons,任君挑選,是不是很棒啊?超棒的對吧?

事實七:下載二進位檔

  • conan install 安裝套件時,可以從官方伺服器下載預先編譯好的二進位檔案,省下在自己電腦上編譯的時間,前提是你的編譯器組態恰好跟官方預設的一樣!
  • vcpkg install 安裝套件則是下載原始碼並現場在自己電腦上編譯。只有第一次安裝需要編譯,第二次以後就從本機快取拿。但是用 vcpkg 安裝 Qt 之類的大型函式庫,第一次等編譯可能會等到天荒地老,時間足夠你好好睡一場覺。

事實八:版本觀完全相反

  • Conan 允許你指定每個套件的版本,給你完全的自由,但是有菱形衝突自己解決
  • Vcpkg 是微軟幫你挑好的一整組的套件版本號,經微軟驗證,無腦可用,但是在控制單獨一個套件版本號比較不方便。

事實九:深入使用的體驗

到了深入使用的階段,Conan 使用者大多數時候都在寫 Python code,vcpkg使用者都在寫 JSON+CMake。你比較喜歡 Python 還是 CMake 語法?

事實十:大改版

  • 兩者都在推出初版的幾年後,又不約而同的出了一個幾乎不相容的重大改版
  • 2023 年大改版 Conan v2.0 推出,完全不相容 Conan v1。大量早年的網路教學文章還停留在 Conan v1,要小心照抄的話會一直撞牆。
  • 2021 年 vcpkg 推出了全新的清單模式 (Manifest Mode),並且推薦大家全面改用清單模式。但是卻沒有移除原本的傳統模式 (Classic Mode),所以現在依舊可以切換 Manifest/Classic Mode,看教學文章時,要搞清楚你在用哪個模式很重要。

上一篇
D01: 都2026了用C++外部函式庫怎麼還那麼麻煩
下一篇
D03: Conan 套件管理第一步:Hello conanfile.txt
系列文
C++ 套件管理器求生指南 Conan vs Vcpkg 共 27 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Miles
iT邦新手 1 級 ‧ 2026-09-16 23:22:04

太強了,佩服每個字都自己打的大師

我大多都是自己打的,但會用 AI 輔助校稿,而有部分的內容是由 AI 寫的

我要留言

立即登入留言